home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Apple WWDC 1996
/
WWDC96_1996 (CD).toast
/
Technology Materials
/
MacOS 8 Resources
/
Developer Tools
/
Mac OS 8 Interfaces & Libraries
/
Interfaces
/
CIncludes
/
CMICCProfile.h
< prev
next >
Wrap
C/C++ Source or Header
|
1996-05-01
|
26KB
|
836 lines
/*
File: CMICCProfile.h
Contains: Definitions for ColorSync 2.0 profile
Version: Technology: ColorSync 2.0
Release: Universal Interfaces 3.0d3 on Copland DR1
Copyright: © 1984-1996 by Apple Computer, Inc. All rights reserved.
Bugs?: If you find a problem with this file, send the file and version
information (from above) and the problem description to:
Internet: apple.bugs@applelink.apple.com
AppleLink: APPLE.BUGS
*/
#ifndef __CMICCPROFILE__
#define __CMICCPROFILE__
#ifndef __TYPES__
#include <Types.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
#if PRAGMA_IMPORT_SUPPORTED
#pragma import on
#endif
#if PRAGMA_ALIGN_SUPPORTED
#pragma options align=mac68k
#endif
/* Current CMProfile.header.profileVersion Major: 2, Minor: 0, Stage: Developement (x20), Prerelease:0x01 */
enum {
cmCS2ProfileVersion = 0x02000000
};
/* Current Major version number */
enum {
cmCurrentProfileMajorVersion = 0x02000000
};
/* magic cookie number for anonymous file ID */
enum {
cmMagicNumber = 'acsp'
};
/* ColorSync profile version 1.0 */
enum {
cmCS1ProfileVersion = 0x00000100
};
/************************************************************************/
/*************** ColorSync 2.0 profile specification ********************/
/************************************************************************/
/* profile flags element values */
enum {
cmEmbeddedProfile = 0, /* 0 is not embedded profile, 1 is embedded profile */
cmEmbeddedUse = 1 /* 0 is to use anywhere, 1 is to use as embedded profile only */
};
/* data type element values */
enum {
cmAsciiData = 0,
cmBinaryData = 1
};
/* rendering intent element values */
enum {
cmPerceptual = 0, /* Photographic images */
cmRelativeColorimetric = 1, /* Logo Colors */
cmSaturation = 2, /* Business graphics */
cmAbsoluteColorimetric = 3 /* Logo Colors */
};
/* speed and quality flag options */
enum {
cmNormalMode = 0, /* it uses the least significent two bits in the high word of flag */
cmDraftMode = 1, /* it should be evaulated like this: right shift 16 bits first, mask off the */
cmBestMode = 2 /* high 14 bits, and then compare with the enum to determine the option value */
};
/* device/media attributes element values */
enum {
cmReflective = 0, /* 0 is reflective media, 1 is transparency media */
cmGlossy = 1 /* 0 is glossy, 1 is matte */
};
/* screen encodings */
enum {
cmPrtrDefaultScreens = 0, /* Use printer default screens. 0 is false, 1 is ture */
cmLinesPer = 1 /* 0 is LinesPerCm, 1 is LinesPerInch */
};
/* 2.0 tag type information */
enum {
cmNumHeaderElements = 10
};
/* public tags */
enum {
cmAToB0Tag = 'A2B0',
cmAToB1Tag = 'A2B1',
cmAToB2Tag = 'A2B2',
cmBlueColorantTag = 'bXYZ',
cmBlueTRCTag = 'bTRC',
cmBToA0Tag = 'B2A0',
cmBToA1Tag = 'B2A1',
cmBToA2Tag = 'B2A2',
cmCalibrationDateTimeTag = 'calt',
cmCharTargetTag = 'targ',
cmCopyrightTag = 'cprt',
cmDeviceMfgDescTag = 'dmnd',
cmDeviceModelDescTag = 'dmdd',
cmGamutTag = 'gamt',
cmGrayTRCTag = 'kTRC',
cmGreenColorantTag = 'gXYZ',
cmGreenTRCTag = 'gTRC',
cmLuminanceTag = 'lumi',
cmMeasurementTag = 'meas',
cmMediaBlackPointTag = 'bkpt',
cmMediaWhitePointTag = 'wtpt',
cmNamedColorTag = 'ncol',
cmNamedColor2Tag = 'ncl2',
cmPreview0Tag = 'pre0',
cmPreview1Tag = 'pre1',
cmPreview2Tag = 'pre2',
cmProfileDescriptionTag = 'desc',
cmProfileSequenceDescTag = 'pseq',
cmPS2CRD0Tag = 'psd0',
cmPS2CRD1Tag = 'psd1',
cmPS2CRD2Tag = 'psd2',
cmPS2CRD3Tag = 'psd3',
cmPS2CSATag = 'ps2s',
cmPS2RenderingIntentTag = 'ps2i',
cmRedColorantTag = 'rXYZ',
cmRedTRCTag = 'rTRC',
cmScreeningDescTag = 'scrd',
cmScreeningTag = 'scrn',
cmTechnologyTag = 'tech',
cmUcrBgTag = 'bfd ',
cmViewingConditionsDescTag = 'vued',
cmViewingConditionsTag = 'view'
};
/* custom tags */
enum {
cmPS2CRDVMSizeTag = 'psvm'
};
/* technology tag descriptions */
enum {
cmTechnologyFilmScanner = 'fscn',
cmTechnologyReflectiveScanner = 'rscn',
cmTechnologyInkJetPrinter = 'ijet',
cmTechnologyThermalWaxPrinter = 'twax',
cmTechnologyElectrophotographicPrinter = 'epho',
cmTechnologyElectrostaticPrinter = 'esta',
cmTechnologyDyeSublimationPrinter = 'dsub',
cmTechnologyPhotographicPaperPrinter = 'rpho',
cmTechnologyFilmWriter = 'fprn',
cmTechnologyVideoMonitor = 'vidm',
cmTechnologyVideoCamera = 'vidc',
cmTechnologyProjectionTelevision = 'pjtv',
cmTechnologyCRTDisplay = 'CRT ',
cmTechnologyPMDisplay = 'PMD ',
cmTechnologyAMDisplay = 'AMD ',
cmTechnologyPhotoCD = 'KPCD',
cmTechnologyPhotoImageSetter = 'imgs',
cmTechnologyGravure = 'grav',
cmTechnologyOffsetLithography = 'offs',
cmTechnologySilkscreen = 'silk',
cmTechnologyFlexography = 'flex'
};
/* type signatures */
enum {
cmSigCurveType = 'curv',
cmSigDataType = 'data',
cmSigDateTimeType = 'dtim',
cmSigLut16Type = 'mft2',
cmSigLut8Type = 'mft1',
cmSigMeasurementType = 'meas',
cmSigNamedColorType = 'ncol',
cmSigNamedColor2Type = 'ncl2',
cmSigProfileDescriptionType = 'desc',
cmSigScreeningType = 'scrn',
cmSigS15Fixed16Type = 'sf32',
cmSigSignatureType = 'sig ',
cmSigTextType = 'text',
cmSigU16Fixed16Type = 'uf32',
cmSigU1Fixed15Type = 'uf16',
cmSigUInt32Type = 'ui32',
cmSigUInt64Type = 'ui64',
cmSigUInt8Type = 'ui08',
cmSigViewingConditionsType = 'view',
cmSigXYZType = 'XYZ '
};
/* Measurement type encodings */
/* Measurement Flare */
enum {
cmFlare0 = 0x00000000,
cmFlare100 = 0x00000001
};
/* Measurement Geometry */
enum {
cmGeometryUnknown = 0x00000000,
cmGeometry045or450 = 0x00000001,
cmGeometry0dord0 = 0x00000002
};
/* Standard Observer */
enum {
cmStdobsUnknown = 0x00000000,
cmStdobs1931TwoDegrees = 0x00000001,
cmStdobs1964TenDegrees = 0x00000002
};
/* Standard Illuminant */
enum {
cmIlluminantUnknown = 0x00000000,
cmIlluminantD50 = 0x00000001,
cmIlluminantD65 = 0x00000002,
cmIlluminantD93 = 0x00000003,
cmIlluminantF2 = 0x00000004,
cmIlluminantD55 = 0x00000005,
cmIlluminantA = 0x00000006,
cmIlluminantEquiPower = 0x00000007,
cmIlluminantF8 = 0x00000008
};
/* Spot Function Value */
enum {
cmSpotFunctionUnknown = 0,
cmSpotFunctionDefault = 1,
cmSpotFunctionRound = 2,
cmSpotFunctionDiamond = 3,
cmSpotFunctionEllipse = 4,
cmSpotFunctionLine = 5,
cmSpotFunctionSquare = 6,
cmSpotFunctionCross = 7
};
/* Color Space Signatures */
enum {
cmXYZData = 'XYZ ',
cmLabData = 'Lab ',
cmLuvData = 'Luv ',
cmYxyData = 'Yxy ',
cmRGBData = 'RGB ',
cmGrayData = 'GRAY',
cmHSVData = 'HSV ',
cmHLSData = 'HLS ',
cmCMYKData = 'CMYK',
cmCMYData = 'CMY ',
cmMCH5Data = 'MCH5',
cmMCH6Data = 'MCH6',
cmMCH7Data = 'MCH7',
cmMCH8Data = 'MCH8'
};
/* profileClass enumerations */
enum {
cmInputClass = 'scnr',
cmDisplayClass = 'mntr',
cmOutputClass = 'prtr',
cmLinkClass = 'link',
cmAbstractClass = 'abst',
cmColorSpaceClass = 'spac'
};
/* platform enumerations */
enum {
cmMacintosh = 'APPL',
cmMicrosoft = 'MSFT',
cmSolaris = 'SUNW',
cmSiliconGraphics = 'SGI ',
cmTaligent = 'TGNT'
};
/* ColorSync 1.0 elements */
enum {
cmCS1ChromTag = 'chrm',
cmCS1TRCTag = 'trc ',
cmCS1NameTag = 'name',
cmCS1CustTag = 'cust'
};
/* General element data types */
struct CMDateTime {
unsigned short year;
unsigned short month;
unsigned short dayOfTheMonth;
unsigned short hours;
unsigned short minutes;
unsigned short seconds;
};
typedef struct CMDateTime CMDateTime;
struct CMFixedXYZColor {
Fixed X;
Fixed Y;
Fixed Z;
};
typedef struct CMFixedXYZColor CMFixedXYZColor;
typedef unsigned short CMXYZComponent;
struct CMXYZColor {
CMXYZComponent X;
CMXYZComponent Y;
CMXYZComponent Z;
};
typedef struct CMXYZColor CMXYZColor;
struct CM2Header {
unsigned long size; /* This is the total size of the Profile */
OSType CMMType; /* CMM signature, Registered with CS2 consortium */
unsigned long profileVersion; /* Version of CMProfile format */
OSType profileClass; /* input, display, output, devicelink, abstract, or color conversion profile type */
OSType dataColorSpace; /* color space of data */
OSType profileConnectionSpace; /* profile connection color space */
CMDateTime dateTime; /* date and time of profile creation */
OSType CS2profileSignature; /* 'acsp' constant ColorSync 2.0 file ID */
OSType platform; /* primary profile platform, Registered with CS2 consortium */
unsigned long flags; /* profile flags */
OSType deviceManufacturer; /* Registered with ICC consortium */
unsigned long deviceModel; /* Registered with ICC consortium */
unsigned long deviceAttributes[2]; /* Attributes like paper type */
unsigned long renderingIntent; /* preferred rendering intent of tagged object */
CMFixedXYZColor white; /* profile illuminant */
OSType creator; /* profile creator */
char reserved[44]; /* reserved for future use */
};
typedef struct CM2Header CM2Header;
struct CMTagRecord {
OSType tag; /* Registered with CS2 consortium */
unsigned long elementOffset; /* Relative to start of CMProfile */
unsigned long elementSize;
};
typedef struct CMTagRecord CMTagRecord;
struct CMTagElemTable {
unsigned long count;
CMTagRecord tagList[1]; /* Variable size */
};
typedef struct CMTagElemTable CMTagElemTable;
/* External 0x02002001 CMProfile */
struct CM2Profile {
CM2Header header;
CMTagElemTable tagTable;
char elemData[1]; /* Tagged element storage. Variable size */
};
typedef struct CM2Profile CM2Profile;
typedef CM2Profile *CM2ProfilePtr;
typedef CM2ProfilePtr *CM2ProfileHandle;
/* Tag Type Definitions */
struct CMCurveType {
OSType typeDescriptor; /* 'curv' */
unsigned long reserved; /* fill with 0x00 */
unsigned long countValue; /* number of entries in table that follows */
unsigned short data[1]; /* Tagged element storage. Variable size */
};
typedef struct CMCurveType CMCurveType;
struct CMDataType {
OSType typeDescriptor; /* 'data' */
unsigned long reserved; /* fill with 0x00 */
unsigned long dataFlag; /* 0 = ASCII, 1 = binary */
char data[1]; /* Tagged element storage. Variable size */
};
typedef struct CMDataType CMDataType;
struct CMDateTimeType {
OSType typeDescriptor; /* 'dtim' */
unsigned long reserved;
CMDateTime dateTime;
};
typedef struct CMDateTimeType CMDateTimeType;
struct CMLut16Type {
OSType typeDescriptor; /* 'mft2' */
unsigned long reserved; /* fill with 0x00 */
unsigned char inputChannels; /* Number of input channels */
unsigned char outputChannels; /* Number of output channels */
unsigned char gridPoints; /* Number of clutTable grid points */
unsigned char reserved2; /* fill with 0x00 */
Fixed matrix[3][3]; /* */
unsigned short inputTableEntries; /* */
unsigned short outputTableEntries; /* */
unsigned short inputTable[1]; /* Variable size */
unsigned short CLUT[1]; /* Variable size */
unsigned short outputTable[1]; /* Variable size */
};
typedef struct CMLut16Type CMLut16Type;
struct CMLut8Type {
OSType typeDescriptor; /* 'mft1' */
unsigned long reserved; /* fill with 0x00 */
unsigned char inputChannels; /* */
unsigned char outputChannels; /* */
unsigned char gridPoints; /* */
unsigned char reserved2; /* fill with 0x00 */
Fixed matrix[3][3]; /* */
unsigned char inputTable[256]; /* fixed size of 256 */
unsigned char CLUT[2]; /* Variable size */
unsigned char outputTable[256]; /* fixed size of 256 */
};
typedef struct CMLut8Type CMLut8Type;
struct CMMeasurementType {
OSType typeDescriptor; /* 'meas' */
unsigned long reserved; /* fill with 0x00 */
unsigned long standardObserver; /* 0 : unknown, 1 : CIE 1931, 2 : CIE 1964 */
CMFixedXYZColor backingXYZ; /* absolute XYZ values of backing */
unsigned long geometry; /* 0 : unknown, 1 : 0/45 or 45/0, 2 :0/d or d/0 */
unsigned long flare; /* 0 : 0%, 1 : 100% flare */
unsigned long illuminant; /* standard illuminant */
};
typedef struct CMMeasurementType CMMeasurementType;
struct CMNamedColorType {
OSType typeDescriptor; /* 'ncol' */
unsigned long reserved; /* fill with 0x00 */
unsigned long vendorFlag; /* */
unsigned long count; /* count of named colors in array that follows */
unsigned char prefixName[1]; /* Variable size, max = 32, to access fields after this one, have to count bytes */
unsigned char suffixName[1]; /* Variable size, max = 32 */
char data[1]; /* varaible size data as explained below */
};
typedef struct CMNamedColorType CMNamedColorType;
/*
A variable size array of structs appears as the last block of data
in the above struct, CMNamedColorType. The data structure
is as follows: (example in C)
struct {
unsigned char rootName[1]; * Variable size, max = 32
unsigned char colorCoords[1]; * Variable size
} colorName[1]; * Variable size
*/
struct CMNamedColor2Type {
OSType typeDescriptor; /* 'ncl2' */
unsigned long reserved; /* fill with 0x00 */
unsigned long vendorFlag; /* lower 16 bits reserved for ICC use */
unsigned long count; /* count of named colors in array that follows */
unsigned long deviceChannelCount; /* number of device channels, 0 indicates no device value available */
unsigned char prefixName[32]; /* 32 byte field. 7 bit ASCII null terminated */
unsigned char suffixName[32]; /* 32 byte field. 7 bit ASCII null terminated */
char data[1]; /* varaible size data as explained below */
};
typedef struct CMNamedColor2Type CMNamedColor2Type;
/*
A variable size array of structs appears as the last block of data
in the above struct, CMNamedColor2Type. The data structure
is as follows: (example in C)
struct {
unsigned char rootName[1]; * 32 byte field. 7 bit ASCII null terminated
unsigned char PCSColorCoords[1]; * Variable size
unsigned char DeviceColorCoords[1]; * Variable size
} colorName2[1]; * Variable size
*/
struct CMTextDescriptionType {
OSType typeDescriptor; /* 'desc' */
unsigned long reserved; /* fill with 0x00 */
unsigned long ASCIICount; /* the count of "bytes" */
unsigned char ASCIIName[2]; /* Variable size, to access fields after this one, have to count bytes */
unsigned long UniCodeCode;
unsigned long UniCodeCount; /* the count of characters, each character has two bytes */
unsigned char UniCodeName[2]; /* Variable size */
short ScriptCodeCode;
unsigned char ScriptCodeCount; /* the count of "bytes" */
unsigned char ScriptCodeName[2]; /* Variable size */
};
typedef struct CMTextDescriptionType CMTextDescriptionType;
struct CMTextType {
OSType typeDescriptor; /* 'text' */
unsigned long reserved; /* fill with 0x00 */
unsigned char text[1]; /* count of text is obtained from tag size element */
};
typedef struct CMTextType CMTextType;
struct CMScreeningType {
OSType typeDescriptor; /* 'scrn' */
unsigned long reserved; /* fill with 0x00 */
unsigned long screeningFlag; /* bit 0 : use printer default screens, bit 1 : inch/cm */
unsigned long channelCount;
char data[1]; /* varaible size data as explained below */
};
typedef struct CMScreeningType CMScreeningType;
/*
A variable size array of structs appears as the last block of data
in the above struct, CMScreeningType. The data structure
is as follows: (example in C)
struct {
Fixed frequency;
Fixed angle;
unsigned long sportFunction;
} channelScreening[1]; * Variable size
*/
struct CMSignatureType {
OSType typeDescriptor; /* 'sig ' */
unsigned long reserved; /* fill with 0x00 */
OSType signature;
};
typedef struct CMSignatureType CMSignatureType;
struct CMS15Fixed16ArrayType {
OSType typeDescriptor; /* 'sf32' */
unsigned long reserved; /* fill with 0x00 */
Fixed value[1]; /* Variable size */
};
typedef struct CMS15Fixed16ArrayType CMS15Fixed16ArrayType;
struct CMU16Fixed16ArrayType {
OSType typeDescriptor; /* 'uf32' */
unsigned long reserved; /* fill with 0x00 */
unsigned long value[1]; /* Variable size */
};
typedef struct CMU16Fixed16ArrayType CMU16Fixed16ArrayType;
struct CMUInt16ArrayType {
OSType typeDescriptor; /* 'ui16' */
unsigned long reserved; /* fill with 0x00 */
unsigned short value[1]; /* Variable size */
};
typedef struct CMUInt16ArrayType CMUInt16ArrayType;
struct CMUInt32ArrayType {
OSType typeDescriptor; /* 'ui32' */
unsigned long reserved; /* fill with 0x00 */
unsigned long value[1]; /* Variable size */
};
typedef struct CMUInt32ArrayType CMUInt32ArrayType;
struct CMUInt64ArrayType {
OSType typeDescriptor; /* 'ui64' */
unsigned long reserved; /* fill with 0x00 */
unsigned long value[1]; /* Variable size (x2) */
};
typedef struct CMUInt64ArrayType CMUInt64ArrayType;
struct CMUInt8ArrayType {
OSType typeDescriptor; /* 'ui08' */
unsigned long reserved; /* fill with 0x00 */
unsigned char value[1]; /* Variable size */
};
typedef struct CMUInt8ArrayType CMUInt8ArrayType;
struct CMViewingConditionsType {
OSType typeDescriptor; /* 'view' */
unsigned long reserved; /* fill with 0x00 */
CMFixedXYZColor illuminant; /* absolute XYZs of illuminant in cd/m^2 */
CMFixedXYZColor surround; /* absolute XYZs of surround in cd/m^2 */
unsigned long stdIlluminant; /* see definitions of std illuminants */
};
typedef struct CMViewingConditionsType CMViewingConditionsType;
struct CMXYZType {
OSType typeDescriptor; /* 'XYZ ' */
unsigned long reserved; /* fill with 0x00 */
CMFixedXYZColor XYZ[1]; /* variable size XYZ tristimulus values */
};
typedef struct CMXYZType CMXYZType;
/* Profile sequence description type */
struct CMProfileSequenceDescType {
OSType typeDescriptor; /* 'pseq ' */
unsigned long reserved; /* fill with 0x00 */
unsigned long count; /* Number of descriptions */
char data[1]; /* varaible size data as explained below */
};
typedef struct CMProfileSequenceDescType CMProfileSequenceDescType;
/*
A variable size array of structs appears as the last block of data
in the above struct, CMProfileSequenceDescType. The data structure
is as follows: (example in C)
struct {
OSType deviceMfg; * Device Manufacturer
OSType deviceModel; * Decvice Model
unsigned long attributes[2]; * Device attributes
OSType technology; * Technology signature
unsigned long mfgDescASCIICount; * the count of "bytes"
unsigned char mfgDescASCIIName[2]; * Variable size
unsigned long mfgDescUniCodeCode;
unsigned long mfgDescUniCodeCount; * the count of characters, each character has two bytes
unsigned char mfgDescUniCodeName[2]; * Variable size
unsigned long mfgDescScriptCodeCode;
unsigned long mfgDescScriptCodeCount; * the count of "bytes"
unsigned char mfgDescScriptCodeName[2]; * Variable size
unsigned long modelDescASCIICount; * the count of "bytes"
unsigned char modelDescASCIIName[2]; * Variable size
unsigned long modelDescUniCodeCode;
unsigned long modelDescUniCodeCount; * the count of characters, each character has two bytes
unsigned char modelDescUniCodeName[2]; * Variable size
short modelDescScriptCodeCode;
unsigned char modelDescScriptCodeCount; * the count of "bytes"
SInt8 filler; * For proper alignment across languages
unsigned char modelDescScriptCodeName[2]; * Variable size
} profileDescription[1];
*/
/* Under color removal, black generation type */
struct CMUcrBgType {
OSType typeDescriptor; /* 'bfd ' */
unsigned long reserved; /* fill with 0x00 */
unsigned long ucrCount; /* Number of UCR entries */
unsigned short ucrValues[1]; /* variable size */
unsigned long bgCount; /* Number of BG entries */
unsigned short bgValues[1]; /* variable size */
unsigned char ucrbgASCII[1]; /* null terminated ASCII string */
};
typedef struct CMUcrBgType CMUcrBgType;
struct CMIntentCRDVMSize {
long renderingIntent; /* rendering intent */
unsigned long VMSize; /* VM size taken up by the CRD */
};
typedef struct CMIntentCRDVMSize CMIntentCRDVMSize;
struct CMPS2CRDVMSizeType {
OSType typeDescriptor; /* 'psvm' */
unsigned long reserved; /* fill with 0x00 */
unsigned long count; /* number of intent entries */
CMIntentCRDVMSize intentCRD[1]; /* variable size */
};
typedef struct CMPS2CRDVMSizeType CMPS2CRDVMSizeType;
/************************************************************************/
/*************** ColorSync 1.0 profile specification ********************/
/************************************************************************/
enum {
cmGrayResponse = 0,
cmRedResponse = 1,
cmGreenResponse = 2,
cmBlueResponse = 3,
cmCyanResponse = 4,
cmMagentaResponse = 5,
cmYellowResponse = 6,
cmUcrResponse = 7,
cmBgResponse = 8,
cmOnePlusLastResponse = 9
};
/* Device types */
enum {
cmMonitorDevice = 'mntr',
cmScannerDevice = 'scnr',
cmPrinterDevice = 'prtr'
};
struct CMIString {
ScriptCode theScript;
Str63 theString;
};
typedef struct CMIString CMIString;
/* Profile options */
enum {
cmPerceptualMatch = 0x0000, /* Default. For photographic images */
cmColorimetricMatch = 0x0001, /* Exact matching when possible */
cmSaturationMatch = 0x0002 /* For solid colors */
};
/* Profile flags */
enum {
cmNativeMatchingPreferred = 0x00000001, /* Default to native not preferred */
cmTurnOffCache = 0x00000002 /* Default to turn on CMM cache */
};
typedef long CMMatchOption;
typedef long CMMatchFlag;
struct CMHeader {
unsigned long size;
OSType CMMType;
unsigned long applProfileVersion;
OSType dataType;
OSType deviceType;
OSType deviceManufacturer;
unsigned long deviceModel;
unsigned long deviceAttributes[2];
unsigned long profileNameOffset;
unsigned long customDataOffset;
CMMatchFlag flags;
CMMatchOption options;
CMXYZColor white;
CMXYZColor black;
};
typedef struct CMHeader CMHeader;
struct CMProfileChromaticities {
CMXYZColor red;
CMXYZColor green;
CMXYZColor blue;
CMXYZColor cyan;
CMXYZColor magenta;
CMXYZColor yellow;
};
typedef struct CMProfileChromaticities CMProfileChromaticities;
struct CMProfileResponse {
unsigned short counts[9];
unsigned short data[1]; /* Variable size */
};
typedef struct CMProfileResponse CMProfileResponse;
struct CMProfile {
CMHeader header;
CMProfileChromaticities profile;
CMProfileResponse response;
CMIString profileName;
char customData[1]; /* Variable size */
};
typedef struct CMProfile CMProfile;
typedef CMProfile *CMProfilePtr;
typedef CMProfilePtr *CMProfileHandle;
#if OLDROUTINENAMES
enum {
kCMApplProfileVersion = cmCS1ProfileVersion
};
enum {
grayResponse = cmGrayResponse,
redResponse = cmRedResponse,
greenResponse = cmGreenResponse,
blueResponse = cmBlueResponse,
cyanResponse = cmCyanResponse,
magentaResponse = cmMagentaResponse,
yellowResponse = cmYellowResponse,
ucrResponse = cmUcrResponse,
bgResponse = cmBgResponse,
onePlusLastResponse = cmOnePlusLastResponse
};
enum {
rgbData = cmRGBData,
cmykData = cmCMYKData,
grayData = cmGrayData,
xyzData = cmXYZData
};
enum {
XYZData = cmXYZData
};
enum {
monitorDevice = cmMonitorDevice,
scannerDevice = cmScannerDevice,
printerDevice = cmPrinterDevice
};
enum {
CMNativeMatchingPreferred = cmNativeMatchingPreferred, /* Default to native not preferred */
CMTurnOffCache = cmTurnOffCache /* Default to turn on CMM cache */
};
enum {
CMPerceptualMatch = cmPerceptualMatch, /* Default. For photographic images */
CMColorimetricMatch = cmColorimetricMatch, /* Exact matching when possible */
CMSaturationMatch = cmSaturationMatch /* For solid colors */
};
typedef unsigned short XYZComponent;
typedef CMXYZColor XYZColor;
typedef unsigned short CMResponseData;
typedef CMIString IString;
typedef long CMResponseColor;
typedef CMResponseColor responseColor;
#endif
#if PRAGMA_ALIGN_SUPPORTED
#pragma options align=reset
#endif
#if PRAGMA_IMPORT_SUPPORTED
#pragma import off
#endif
#ifdef __cplusplus
}
#endif
#endif /* __CMICCPROFILE__ */